import java.util.HashMap;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 苏李涛
 * Date: 2024-10-25
 * Time: 20:07
 */

//和为 K 的子数组
public class Demo2 {
    public int subArraySum(int[] nums, int k) {
        Map<Integer,Integer> hash = new HashMap<>();

        hash.put(0,1);//整个数组加起来等于K时，返回结果


        //sum滚动实现前缀和
        int ret = 0, sum = 0;
        for(int x : nums) {

            //计算当前位置的前缀和
            sum += x;

            //统计前缀和次数等于sum-k的个数
            ret += hash.getOrDefault(sum-k,0);

            //统计前缀和个数同时，前缀和放入哈希表里
            hash.put(sum,hash.getOrDefault(sum,0)+1);
        }

        return ret;
    }
}
